package com.om.base;

import java.sql.Date;



import java.sql.Connection;



/**
 * 连接适配器类，改类用于提供数据库连接的适配器
 * @author tangchuan
 *
 */
public abstract class AbstractConnectionAdapter
{
	
	protected int openerThreadId=0;
	protected Date openTime=null;
	
	
    protected DBConnectionManager dbConnectionManager = null;
	
    /**
     * 获取当前打开当前连接的线程的句柄
     * @return 打开当前连接线程的柄
     */
	public int getOpenerThreadId() {
		return openerThreadId;
	}
	
	/**
	 * 设置当前打开当前连接的线程的句柄
	 * @param openerThreadId 线程句柄
	 */
	public void setOpenerThreadId(int openerThreadId) {
		this.openerThreadId = openerThreadId;
	}
	
	 /**
     * 获取当前打开当前连接的时间点
     * @return 当前连接打开的时间对象
     */
	public Date getOpenTime() {
		return openTime;
	}
	
	 /**
     * 设置当前打开当前连接的时间点
     */
	public void setOpenTime(Date openTime) {
		this.openTime = openTime;
	}

	
	 /**
     * 获取当前连接的管理器对象（用于提供给spring 注入）
     * @return 当前连接适配器的连接管理器对象
     */
	public DBConnectionManager getDbConnectionManager() {
		return dbConnectionManager;
	}
	
	/**
	 * 设置当前连接的管理器对象
	 * @param dbConnectionManager xuy
	 */
	public void setDbConnectionManager(DBConnectionManager dbConnectionManager) {
		this.dbConnectionManager = dbConnectionManager;
	}
	
	/**
	 * 通过key获取符合某个配置的数据库连接（改方法需要在派生类中加以实现）
	 * @param key 
	 * @return 被当前线程托管的一个可用数据库连接
	 */
	public abstract Connection getAvailableConnection(String key);	
	
}

